java 从邮箱里面把附件拿出来
代码直接用
springboot 项目
<!--Emial-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
package com.kdmins.mail;
import com.sun.mail.pop3.POP3Folder;
import com.sun.mail.pop3.POP3Store;
import com.sun.mail.util.MailSSLSocketFactory;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* 邮件接受测试
*/
/**
* 使用POP3协议接收邮件
*/
public class POP3ReceiveMailTest {
public static void main(String[] args) throws Exception {
resceive();
}
/**
* 接收邮件 使用之前请先开启邮箱中的协议
*/
public static void resceive() throws Exception {
Properties props = new Properties();
props.setProperty("mail.popStore.protocol", "pop3"); // 使用pop3协议
props.setProperty("mail.pop3.port", "995"); // 端口 每个邮箱端口号都不一样 网易163 是110
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.pop3.ssl.enable",true);
props.put("mail.pop3.ssl.socketFactory",sf);
//props.setProperty("mail.debug", "true");
props.setProperty("mail.pop3.host", "pop.qq.com");
Session session = Session.getInstance(props);
POP3Store store = (POP3Store) session.getStore("pop3");
//这里的密码 是令牌 而不是 真正的邮箱密码,具体请百度
store.connect("pop.qq.com", 995, "123456@qq.com", "qqqqqqqqqqqqqq");
POP3Folder folder = (POP3Folder) store.getFolder("INBOX");
// 获得收件箱
//Folder folder = store.getFolder("INBOX");
/* Folder.READ_ONLY:只读权限
* Folder.READ_WRITE:可读可写(可以修改邮件的状态)
*/
folder.open(Folder.READ_WRITE); //打开收件箱
// 由于POP3协议无法获知邮件的状态,所以getUnreadMessageCount得到的是收件箱的邮件总数
System.out.println("未读邮件数: " + folder.getUnreadMessageCount());
// 由于POP3协议无法获知邮件的状态,所以下面得到的结果始终都是为0
System.out.println("删除邮件数: " + folder.getDeletedMessageCount());
System.out.println("新邮件: " + folder.getNewMessageCount());
// 获得收件箱中的邮件总数
System.out.println("邮件总数: " + folder.getMessageCount());
// 得到收件箱中的所有邮件,并解析
Message[] messages = folder.getMessages();
parseMessage(messages);
//得到收件箱中的所有邮件并且删除邮件
//deleteMessage(messages);